//定义一个JS控制器 AMD require.js 模块化插件
//1、需要引入插件
//2、该控制器模块的业务逻辑
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form){
    // 定义一个控制器
    var Controller = {
        index:function(){
             //给选项卡绑定点击事件 切换选项卡的时候才会触发
             $(`a[data-toggle="tab"]`).on('shown.bs.tab', function(){
                var tab = $($(this).attr('href'))
                if(tab.length <= 0) return; //为空就停下

                //两个选项卡，分别给两个不同的请求方法
                //根据锚点切换，然后来触发选项卡的方法
                Controller.table[tab.attr('id')].call(this)
            })

            // 一进来就调用第一个选项卡的方法
            Controller.table['room']()

        },
        table:{
            room:function(){
                
                // 初始化表格参数
                // 配置整个表格中增删改查请求控制器的地址，用的ajax情求
                Table.api.init({
                    extend:{
                        index_url:'hotel/room/recyclebin',
                        del_url:'product/product/destroy',
                        restore_url:'product/product/restore',
                        table:'hotel_room'//表
                    }
                });
                // 获取view视图中的dom元素
                var Roomtable = $("#Roomtable")

                // 渲染表格
                // $.ajax
                Roomtable.bootstrapTable({
                    url:$.fn.bootstrapTable.defaults.extend.index_url, //请求地址
                    toolbar:"#Roomtoolbar", //工具栏
                    pk:'id',//默认主键字段名
                    sortName:'id', //排序字段名
                    sortOrder:'desc',//排序的方式
                    // 渲染的数据部分
                    columns:[
                        // 渲染的字段部分
                        {checkbox:true},
                        // operate通用搜索的操作符，sortable切换排序
                        {field:'id',title:'ID',operate:false,sortable:true},
                        {field:'name',title:__('Name'),operate:'LIKE'},   
                        {
                            field: 'flag', 
                            title: __('Flag'), 
                            operate: 'LIKE',
                            sortable:false
                        },
                        {
                            field: 'service', 
                            title: __('Service'), 
                            operate: 'LIKE',
                            sortable:false
                        },
                        {field:'price',title:__('Price'),operate:false,sortable:true},
                        {
                            field:'total',
                            title:__('Total'),
                            operate: false,
                            sortable: true
                        },
                        {
                            field:'live',
                            title:__('Live'),
                            operate: 'LIKE',
                            sortable: false
                        },
                        {
                            field:'area',
                            title:`${__('area')}/平方米`,
                            operate: false,
                            sortable: true
                        },
                        {
                            field:'thumb_text',
                            title:__("Thumb"),
                            operate:false,
                            formatter:Table.api.formatter.image
                        },
                        {
                            field:'deletetime',
                            title:__('DeleteTime'),
                            operate:'RANGE',
                            sortable:true,
                            addclass: 'datetimerange',
                            formatter:Table.api.formatter.datetime
                        },
                        // 最后一排操作按钮
                        {
                            field:'operate',
                            title:__('Operate'),
                            table:Roomtable,
                            events:Table.api.events.operate,
                            formatter:Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'restore',
                                    title: __('Restore'),
                                    classname: 'btn btn-xs btn-success btn-magic btn-ajax',
                                    icon: 'fa fa-reply',
                                    url: $.fn.bootstrapTable.defaults.extend.restore_url,
                                    extend:"data-toggle='tooltip'",
                                    confirm: "是否确认恢复数据",
                                    success: function()
                                    {
                                        //刷新表格
                                        Roomtable.bootstrapTable('refresh')
                                    }
                                },
                            ],
                        }
                    ]
                });

                // 绑定按钮事件
                $('#Roomtoolbar .btn-restore').on('click',function(){
                    // 获取table勾选的id值
                    var ids = Table.api.selectedids(Roomtable)
                    
                    // 弹框
                    layer.confirm(
                        '是否确认恢复数据',
                        {title:"恢复数据",btn:['是','否']},
                        function(index){
                            // 发送ajax请求
                            Backend.api.ajax(
                                {url:$.fn.bootstrapTable.defaults.extend.restore_url+`?ids=${ids}`},
                                () => {
                                    // 关闭弹窗
                                    layer.close(index)

                                    // 刷新表格
                                    Roomtable.bootstrapTable('refresh')
                                }
                            )
                        }
                    )
                })
                // 为表格绑定事件
                Table.api.bindevent(Roomtable);
            },
            order:function(){
                // 初始化表格参数
                // 配置整个表格中增删改查请求控制器的地址，用的ajax情求
                Table.api.init({
                    extend:{
                        index_url:'hotel/order/recyclebin',
                        del_url:'product/order/destroy',
                        restore_url:'product/order/restore',
                        table:'hotel_order'//表
                    }
                });
                // 获取view视图中的dom元素
                var Ordertable = $("#Ordertable")

                // 渲染表格
                // $.ajax
                Ordertable.bootstrapTable({
                    url:$.fn.bootstrapTable.defaults.extend.index_url, //请求地址
                    toolbar:"#Ordertoolbar", //工具栏
                    pk:'id',//默认主键字段名
                    sortName:'order.createtime', //排序字段名
                    sortOrder:'desc',//排序的方式
                    // 渲染的数据部分
                    columns:[
                        // 渲染的字段部分
                        {checkbox:true},
                        // operate通用搜索的操作符，sortable切换排序
                        {field:'id',title:'ID',operate:false,sortable:true},
                        {field:'code',title:__('Code'),operate:'LIKE'},
                        {field:'business.nickname',title:__('Nickname'),operate:'LIKE'},
                        {field:'room.name',title:__('Room'),operate:'LIKE'},
                        {
                            field: 'coupon.title', 
                            title: __('Coupon'),
                            operate: false, 
                        },
                        {field:'guest_text',title:__('Guest'),operate:'LIKE'},
                        {field:'price',title:__('Price'),operate:false},
                        {
                            field: 'status',
                            title: __('Status'),
                            searchList: {"1":__('已支付'),"2":__('已入住'),"3":__('已退房'),"4":__('已评价'),"-1":__('售后中'),"-2":__('退款成功'),"-3":__('退款失败')},
                            operate: 'LIKE',
                            formatter: Table.api.formatter.status
                        },
                        {
                            field: 'createtime', 
                            title: __('CreateTime'), 
                            operate:'RANGE', addclass:'datetimerange', autocomplete:false, 
                            formatter: Table.api.formatter.datetime
                        },
                        {
                            field: 'deletetime', 
                            title: __('Deletetime'), 
                            operate:'RANGE', addclass:'datetimerange', autocomplete:false, 
                            formatter: Table.api.formatter.datetime
                        },
                        // 最后一排操作按钮
                        {
                            field:'operate',
                            title:__('Operate'),
                            table:Ordertable,
                            events:Table.api.events.operate,
                            formatter:Table.api.formatter.operate,
                            buttons: [
                                {
                                    name: 'restore',
                                    title: __('Restore'),
                                    classname: 'btn btn-xs btn-success btn-magic btn-ajax',
                                    icon: 'fa fa-circle-o-notch',
                                    url: $.fn.bootstrapTable.defaults.extend.restore_url,
                                    extend:"data-toggle='tooltip'",
                                    confirm: "是否确认恢复数据",
                                    success: function()
                                    {
                                        //刷新表格
                                        Ordertable.bootstrapTable('refresh')
                                    }
                                },
                            ],
                        }
                    ]
                });

                // 绑定按钮事件
                $('#Ordertoolbar .btn-restore').on('click',function(){
                    // 获取table勾选的id值
                    var ids = Table.api.selectedids(Ordertable)
                    
                    // 弹框
                    layer.confirm(
                        '是否确认恢复数据',
                        {title:"恢复数据",btn:['是','否']},
                        function(index){
                            // 发送ajax请求
                            Backend.api.ajax(
                                {url:$.fn.bootstrapTable.defaults.extend.restore_url+`?ids=${ids}`},
                                () => {
                                    // 关闭弹窗
                                    layer.close(index)

                                    // 刷新表格
                                    Ordertable.bootstrapTable('refresh')
                                }
                            )
                        }
                    )
                })
                // 为表格绑定事件
                Table.api.bindevent(Ordertable);
            }   
        },
        del: function () {
            Controller.api.bindevent();
        },
        api: {
            //JS模块化的全局方法
            bindevent: function () 
            {
                Form.api.bindevent($("form[role=form]"));
            }
        }
    }

    return Controller
})